package com.linkdood.app.service;


import com.linkdood.app.domain.DoodOrganization;
import com.linkdood.app.domain.DoodUser;
import com.linkdood.app.domain.ThirdParty;
import com.linkdood.app.dto.DdioUserDTO;
import com.linkdood.app.service.ddio.*;
import com.linkdood.app.service.dto.DoodFriendsDTO;
import com.linkdood.app.vm.AccountVM;
import java.util.List;



/**
 * 该类封装了所有和 DDIO 交互的操作
 * 其他地方如果要使用 DDIO 相关的 API 必须通过该类来进行
 *
 * @author YunJ
 */
public interface DdioService {

    /**
     * 根据 code 从 ddio 获取登录用户信息
     * FIXME 该接口不在 ddio 校验内，因为无法获取到 code
     */
    DdioUserDTO doWithCode(String code);

    /**
     * 获取所有用户
     */
    List<DoodUser> listUsers(String thirdPartyId);

    /**
     * 获取用户 dood 好友
     */
    List<DoodFriendsDTO> listAllFriends(AccountVM userAccount);

    /**
     * 获取所有的组织信息
     */
    List<DoodOrganization> listOrganizations(String thirdPartyId);

    /**
     * 同步组织信息
     */
    List<DdioOrgSyncResponseBody.DdioSyncOrg> syncOrganizations(String thirdPartyId, String version);

    /**
     * 同步用户信息
     */
    List<DdioUserSyncResponseBody.DdioSyncUser> syncUsers(String thirdPartId, String version);

    /**
     * 根据用户 id 获取详情
     *
     * @param userIds 用户 id
     * @return 豆豆用户详情
     */
    List<DoodUser> listUserInfoByUserIds(String[] userIds);

    /**
     * 获取公司配置信息
     */
    ThirdParty getThirdParty(String thirdPartyId);


    /**
     * 发送消息
     */
    DdioResponseBody sendTemplate2Users(TemplateMessage templateMessage, String thirdId);
}
